package com.jkj.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

/**
 * GSON 封装工具类
 *
 * @author zhoujunwen
 * @date 2016-12-05
 */
public class JsonUtils {
    /**
     * 转成json
     *
     * @param object
     * @return
     */
    public static String toJSON(Object object) {
        return JSONObject.toJSONString(object);
    }

    /**
     * 转成bean
     *
     * @param json
     * @param cls
     * @return
     */
    public static <T> T jsonToBean(String json, Class<T> cls) {
        return JSON.parseObject(json, cls);
    }

    /**
     * 转成list 解决泛型问题
     *
     * @param json
     * @param cls
     * @param <T>
     * @return
     */
    public static <T> List<T> jsonToList(String json, Class<T> cls) {
        return JSON.parseArray(json, cls);
    }

    public static Map<String, Object> json2Map(String json) {
        return (Map<String, Object>) JSONObject.parse(json);
    }

    /**
     * 转成list中有map的
     *
     * @param json
     * @return
     */
    public static <T> List<Map<String, T>> jsonToListMap(String json) {
        List<Object> list = JSON.parseArray(json);
        List<Map<String, T>> listw = new ArrayList<>();
        for (Object object : list) {
            Map<String, T> ret = (Map<String, T>) object;//取出list里面的值转为map;
            listw.add(ret);
        }
        return listw;
    }

    /**
     * 转成map的
     *
     * @param json
     * @return
     */
    public static <T> Map<String, T> jsonToMap(String json) {
        return (Map<String, T>) JSONObject.parse(json);
    }
}